// app/controller/health_controller.js
'use strict';

const { Controller } = require('egg');

class HealthController extends Controller {
  // 健康检查接口
  async check() {
    const { ctx } = this;
    
    try {
      // 检查数据库连接
      await ctx.model.authenticate();
      
      // 检查Redis连接（如果配置了Redis）
      if (ctx.app.redis) {
        await ctx.app.redis.ping();
      }
      
      // 使用context.js中定义的统一响应格式
      ctx.success({
        status: 'healthy',
        timestamp: new Date().toISOString(),
        services: {
          database: 'connected',
          redis: ctx.app.redis ? 'connected' : 'not configured'
        }
      }, '服务健康检查通过');
    } catch (error) {
      ctx.logger.error('健康检查失败:', error);
      ctx.error('服务健康检查失败: ' + error.message, 500);
    }
  }
  
  // 性能监控接口 - 符合AC-PERF-001验收标准
  async performance() {
    const { ctx } = this;
    
    try {
      // 记录开始时间
      const startTime = Date.now();
      
      // 执行一些基本操作来测试性能
      const dbCheckStart = Date.now();
      await ctx.model.authenticate();
      const dbCheckTime = Date.now() - dbCheckStart;
      
      // 构造响应数据
      const responseTime = Date.now() - startTime;
      
      // 使用context.js中定义的统一响应格式
      ctx.success({
        performance: {
          response_time: responseTime + 'ms',
          database_check_time: dbCheckTime + 'ms',
          memory_usage: process.memoryUsage(),
          uptime: process.uptime()
        }
      }, '性能监控数据获取成功');
    } catch (error) {
      ctx.logger.error('性能监控检查失败:', error);
      ctx.error('性能监控检查失败: ' + error.message, 500);
    }
  }
}

module.exports = HealthController;